/**
 * 监听元素是否出现在屏幕
 * @param { String } elName 所在的节点
 * @param { String } attr 需要获取的属性值
 *  {
 *      dataset    // 节点的dataset
 *      width      // 节点的宽度
 *      height     // 节点的高度
 *      scrollLeft // 节点的水平滚动位置
 *      scrollTop  // 节点的竖直滚动位置
 *      scrollX    // 节点 scroll-x 属性的当前值
 *      scrollY    // 节点 scroll-y 属性的当前值
 *
 *      // 此处返回指定要返回的样式名
 *      res.margin
 *      res.backgroundColor
 *      res.context    // 节点对应的 Context 对象
 * }
 * @param { Boolean } isComponent 是否在组建内使用
 * 
 * @return {Function} 一个promise
 */
function listenEltoScreen({
  elName = '',
  attr = '',
  value = '',
  isComponent = {}
} = {}) {
  return new Promise((resolve) => {
    const query = !isComponent ? wx.createIntersectionObserver() : this.createIntersectionObserver()
    query.relativeToViewport({
      [attr]: value
    }).observe(elName, (res) => {
      resolve(res)
    })
  })
}
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 图片链接
    src: {
      type: String,
      value: ''
    },
    item: {
      type: Object,
      value: {},
    },
    index: {
      type: Number,
      value: 0
    },
    width: {
      type: String,
      value: '100%'
    },
    height: {
      type: String,
      value: '100%'
    },
    // 是否触发懒加载(暂不支持动态修改 触发懒加载)
    lazy: {
      type: Boolean,
      value: true
    },
    // 触发懒加载的阀值
    threshold: {
      type: Number,
      value: 20
    },
    // 触发懒加载的方向
    direction: {
      type: String,
      value: 'bottom'
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    show: false,
  },
  /**
   * 组件的方法列表
   */
  methods: {
    tostore(e) {
      const that = this
      if (wx.getStorageSync('token') == "") {
        that.triggerEvent("is_user_show", false);
        that.triggerEvent("is_user", 1);
        return
      }
      wx.navigateTo({
        url: "/pages/index/store/index?store_id=" + e.currentTarget.dataset.storeid,
      });
    },
    call(e) {
      console.log(e)
      let mobile = e.currentTarget.dataset.mobile
      wx.makePhoneCall({
        phoneNumber: mobile
      })
    },
    duo_map(e) {
      console.log('地址'.e)
      let data = e.currentTarget.dataset.data;
      const that = this;
      wx.getLocation({
        type: "wgs84",
        success: function (res) {
          wx.openLocation({
            //​使用微信内置地图查看位置。
            latitude: Number(data.latitude), //要去的纬度-地址
            longitude: Number(data.longitude), //要去的经度-地址
            name: data.store_name,
            address: data.city_value+'.'+data.address,
            scale: 18,
          });
        },
        fail(e) {
          console.log(e);
          wx.setStorageSync("openSet", true);
          that.openSet();
        },
      });
    },
  },
  ready() {
    if (!this.data.lazy) return

    // 监听 元素是否有距离屏幕的情况
    listenEltoScreen.bind(this)({
      elName: '.imgContent',
      attr: this.data.direction,
      value: this.data.threshold,
      isComponent: true
    }).then(() => {
      console.log(21)
      this.setData({
        show: true
      })
    })
  },
  onPageScroll(e) {
    console.log(e)
  }
})